package org.learn.leetcode;
//给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。
//
// 如果反转后整数超过 32 位的有符号整数的范围 ，就返回 0。

public class IntReverse {
    public static void main(String[] args) {
        System.out.println( reverse(-12340));
    }
    //整数反转
    public  static int reverse(int x) {
        String number = String.valueOf(x);
        StringBuilder newNumber = new StringBuilder();

        if (x == 0) {//特殊值
            newNumber.append("0");
        } else {
            if (number.charAt(0) == '-') {//是否为负数
                newNumber.append(number.charAt(0));
                if (number.charAt(number.length() - 1) != '0') {//最后一位不是0；
                    newNumber.append(number.charAt(number.length() - 1));//把最后一位添加到newNumber
                }
                for (int i = number.length() - 2; i >= 1; i--) {//循环添加至第二个元素
                    newNumber.append(number.charAt(i));
                }
            } else {//不为负数
                if (number.charAt(number.length() - 1) != '0') {//最后一位不是0；
                    newNumber.append(number.charAt(number.length() - 1));//把最后一位添加到newNumber
                }
                for (int i = number.length() - 2; i >= 0; i--) {//循环添加至第二个元素
                    newNumber.append(number.charAt(i));
                }
            }
        }

        try {
            return Integer.parseInt(newNumber.toString());//超过int范围返回0；
        } catch (NumberFormatException e) {
            return 0;
        }
    }
}
